{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 第1章 统计学习及监督学习概论"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 例题"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 例1.1\r\n",
    "&emsp;&emsp;假设给定一个训练数据集：\r\n",
    "$$T=\\{(x_1, y_1), (x_2, y_2), \\cdots, (x_N, y_N)\\}$$\r\n",
    "其中，$x_i∈R$ 是输入 $x$ 的观测值，$y_i∈R$ 是相应的输出 $y$ 的观测值，$i=1, 2, \\cdots, N$。\r\n",
    "多项式函数拟合的任务是假设给定数据有 $M$ 次多项式函数生成，选择最有可能产生这些数据的 $M$ 次多项式函数，即在 $M$ 次多项式函数中选择一个对已知数据以及未知数据都有很好预测能力的函数。\r\n",
    "\r\n",
    "&emsp;&emsp;假设给定由函数 $y=\\sin 2\\pi x$ 和正态分布的噪声干扰产生的 10 个数据点，用 0~9 次多项式函数对数据进行拟合。\r\n",
    "\r\n",
    "&emsp;&emsp;设 $M$ 次多项式为\r\n",
    "$$f_M(x, w) = w_0 + w_1x + w_2x^2 + \\cdots + w_Mx^M = \\sum_{j=0}^Mw_jx^j$$\r\n",
    "式中 $x$ 是单变量输入，$w_0, w_1, \\cdots, w_M$ 是 $M + 1$ 个参数。\r\n",
    "\r\n",
    "&emsp;&emsp;首先确定模型的复杂度，即确定多项式的次数；然后在给定的模型复杂度下，按照经验风险最小化的策略，求解参数，即多项式的系数。具体地，求以下经验风险最小化：\r\n",
    "$$L(w)=\\frac 12 \\sum_{i=1}^N(f(x_i, w)-y_i)^2$$\r\n",
    "这时，损失函数为平方损失，系数 $\\frac 12$ 是为了计算方便。\r\n",
    "\r\n",
    "&emsp;&emsp;将模型与训练数据代入式中，有\r\n",
    "$$L(w)=\\frac 12\\sum_{i=1}^N\\Bigg(\\sum_{j=0}^Mw_jx_i^j-y_i\\Bigg)^2$$\r\n",
    "用最小二乘法求得拟合多项式系数的唯一解。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\r\n",
    "import matplotlib.pyplot as plt\r\n",
    "from scipy.optimize import leastsq"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def real_func(x):\r\n",
    "    return np.sin(2 * np.pi * x)\r\n",
    "\r\n",
    "def fit_func(w, x):\r\n",
    "    f = np.poly1d(w)\r\n",
    "    return f(x)\r\n",
    "\r\n",
    "def residual_func(w, x, y):\r\n",
    "    return fit_func(w, x) - y\r\n",
    "\r\n",
    "def fitting(M, x, y, x_points):\r\n",
    "    w0 = np.random.rand(M + 1)\r\n",
    "    w = leastsq(residual_func, w0, args=(x, y))\r\n",
    "\r\n",
    "    plt.plot(x_points, real_func(x_points), label='real curve')\r\n",
    "    plt.plot(x_points, fit_func(w[0], x_points), label='fit curve')\r\n",
    "    plt.plot(x, y, 'o')\r\n",
    "    plt.legend()\r\n",
    "    plt.title('M = {}'.format(M))\r\n",
    "    \r\n",
    "    return w"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = np.linspace(0, 1, 10)\r\n",
    "x_points = np.linspace(0, 1, 1000)\r\n",
    "y = real_func(x) + np.random.randn(10) / 10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 576x432 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8, 6))\r\n",
    "plt.subplots_adjust(hspace=0.3)\r\n",
    "plt.subplot(221)\r\n",
    "w_0 = fitting(0, x, y, x_points)\r\n",
    "plt.subplot(222)\r\n",
    "w_1 = fitting(1, x, y, x_points)\r\n",
    "plt.subplot(223)\r\n",
    "w_3 = fitting(3, x, y, x_points)\r\n",
    "plt.subplot(224)\r\n",
    "w_9 = fitting(9, x, y, x_points)\r\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&emsp;&emsp;上图给出了 $M=0$，$M=1$，$M=3$ 及 $M=9$ 时多项式函数拟合的情况。如果 $M=0$，多项式曲线是一个常数，数据拟合效果很差。如果 $M=1$，多项式曲线是一条直线，数据拟合效果也很差。相反，如果 $M=9$，多项式曲线通过每个数据点，训练误差为 0。从对给定训练数据拟合的角度来说，效果是最好的。但是，因为训练数据本身存在噪声，这种拟合曲线对未知数据的预测能力往往并不是最好的，在实际学习中并不可取，发生了过拟合现象。模型选择时，不仅要考虑对已知数据的预测能力，而且还要考虑对未知数据的预测能力。当 $M=3$ 时，多项式曲线对训练数据拟合效果足够好，模型也比较简单，是一个较好的选择。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "&emsp;&emsp;选择模型的典型方法是正则化。正则化是结构风险最小化策略的实现，是在经验风险上加一个正则化项或罚项。正则化项一般是模型复杂度的单调递增函数，模型越复杂，正则化项就越大。\r\n",
    "\r\n",
    "&emsp;&emsp;正则化一般具有如下形式：\r\n",
    "$$\\underset{f∈\\mathcal{F}}\\min\\frac1N\\sum_{i=1}^NL(y_i, f(x_i)) + λJ(f)$$\r\n",
    "其中，第 1 项是经验风险，第 2 项是正则化项，$λ\\ge0$ 为调整两者之间关系的系数。\r\n",
    "\r\n",
    "&emsp;&emsp;正则化项可以取不同的形式，如模型参数向量的 $L_2$ 范数和 $L_1$ 范数。\r\n",
    "\r\n",
    "&emsp;&emsp;例1.1 中，引入模型参数向量的 $L_2$ 范数作为正则化项：\r\n",
    "$$L(w)=\\frac 12\\sum_{i=1}^N\\Bigg(\\sum_{j=0}^Mw_jx_i^j-y_i\\Bigg)^2 + \\frac λ2||w||^2$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "regularizer = 0.001\r\n",
    "\r\n",
    "def residual_regularization_func(w, x, y):\r\n",
    "    return np.append(residual_func(w, x, y), np.sqrt(regularizer * np.square(w)))\r\n",
    "\r\n",
    "def fitting_regularization(M, x, y, x_points):\r\n",
    "    w0 = np.random.rand(M + 1)\r\n",
    "    w = leastsq(residual_regularization_func, w0, args=(x, y))\r\n",
    "\r\n",
    "    plt.plot(x_points, fit_func(w[0], x_points), label='fit curve with regularization')\r\n",
    "    plt.legend()\r\n",
    "    plt.title('M = {}'.format(M))\r\n",
    "    \r\n",
    "    return w"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "w_9 = fitting(9, x, y, x_points)\r\n",
    "w_9_regularization = fitting_regularization(9, x, y, x_points)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 习题"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 习题1.1\r\n",
    "&emsp;&emsp;说明伯努利模型的极大似然估计以及贝叶斯估计中的统计学习方法三要素。伯努利模型是定义在取值为 0 与 1 的随机变量上的概率分布。假设观测到伯努利模型 $n$ 次独立的数据生成结果，其中 $k$ 次的结果为 1，这时可以用极大似然估计或贝叶斯估计来估计结果为 1 的概率。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "解答：伯努利模型的极大似然估计以及贝叶斯估计中的统计学习方法三要素如下：\r\n",
    "\r\n",
    "| 统计学习方法 |           模型         |            策略            |         算法         |\r\n",
    "| :---------: | :--------------------: | :-----------------------: | :------------------: |\r\n",
    "| 极大似然估计 | 条件概率分布（概率模型） | 对数损失函数，经验风险最小化 |     极大化似然函数    |\r\n",
    "|  贝叶斯估计  | 条件概率分布（概率模型） | 对数损失函数，结构风险最小化 | 参数后验概率分布的期望 |\r\n",
    "\r\n",
    "设结果为 1 的概率为 $P(Y=1)=p$，则结果为 0 的概率为 $P(Y=0)=1-p$。\r\n",
    "\r\n",
    "**极大似然估计**： \r\n",
    "\r\n",
    "似然函数为\r\n",
    "$$L(p)=L(p; y_1, y_2, \\dots, y_n)=\\prod_{i=1}^nP(y_i;p)=p^k(1-p)^{n-k}$$\r\n",
    "取对数得\r\n",
    "$$\\ln L(p)=k\\ln p+(n-k)\\ln(1-p)$$\r\n",
    "令\r\n",
    "$$\\frac{d\\ln L(p)}{dp}=\\frac kp-\\frac{n-k}{1-p}=0$$\r\n",
    "解得 $p$ 的极大似然估计值为 $p=\\frac kn$。\r\n",
    "\r\n",
    "**贝叶斯估计**：\r\n",
    "\r\n",
    "假设 $p$ 服从 $[0, 1]$ 的均匀分布，先验概率分布为 $f(p)=1$，则后验概率分布为\r\n",
    "$$\\begin{aligned}\r\n",
    "f(p|y_1, y_2, \\dots, y_n)\r\n",
    "&=\\frac{f(y_1, y_2, \\dots, y_n|p)f(p)}{\\int_0^1f(y_1, y_2, \\dots, y_n|p)f(p)dp}\\\\\r\n",
    "&=\\frac{p^k(1-p)^{n-k}}{\\int_0^1p^k(1-p)^{n-k}dp}\\\\\r\n",
    "&=\\frac{Γ(n+2)}{Γ(k+1)Γ(n-k+1)}p^k(1-p)^{n-k}\\\\\r\n",
    "&=\\frac{p^k(1-p)^{n-k}}{B(k+1, n-k+1)}\r\n",
    "\\end{aligned}$$\r\n",
    "\r\n",
    "$p$ 的后验概率分布服从参数为 $k+1$ 和 $n-k+1$ 的 Beta 分布，则 $p$ 的期望为\r\n",
    "$$E(p) = \\frac{k+1}{n+2}$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 习题1.2\r\n",
    "&emsp;&emsp;通过经验风险最小化推导极大似然估计。证明模型是条件概率分布，当损失函数是对数损失函数时，经验风险最小化等价于极大似然估计。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "解答：经验风险为\r\n",
    "$$R_{emp}(f)=\\frac 1N\\sum_{i=1}^NL(y_i, f(x_i))$$\r\n",
    "对数损失函数为\r\n",
    "$$L(y_i, f(x_i))=-\\log P(y_i|x_i)$$\r\n",
    "则经验风险最小化为\r\n",
    "$$\\underset{f∈\\mathcal{F}}\\min\\frac 1N\\sum_{i=1}^N[-\\log P(y_i|x_i)]$$\r\n",
    "即\r\n",
    "$$\\underset{f∈\\mathcal{F}}\\max\\sum_{i=1}^N\\log P(y_i|x_i)$$\r\n",
    "似然函数为\r\n",
    "$$L(y_1, y_2, \\dots, y_n|x_1, x_2, \\dots, x_n)=\\prod_{i=1}^NP(y_i|x_i)$$\r\n",
    "取对数得\r\n",
    "$$\\log L(y_1, y_2, \\dots, y_n|x_1, x_2, \\dots, x_n)=\\sum_{i=1}^N\\log P(y_i|x_i)$$\r\n",
    "则极大似然估计为\r\n",
    "$$\\underset{f∈\\mathcal{F}}\\max\\sum_{i=1}^N\\log P(y_i|x_i)$$\r\n",
    "故，模型是条件概率分布，当损失函数是对数损失函数时，经验风险最小化等价于极大似然估计。"
   ]
  }
 ],
 "metadata": {
  "interpreter": {
   "hash": "62ec2d263dbf7abb1b42dc66bbc59121494ef7eccce234664936441f909ec6f7"
  },
  "kernelspec": {
   "display_name": "Python 3.8.6 32-bit",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.6"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}